import * as PanelMenu from '../panelMenu.js';
import * as PopupMenu from '../popupMenu.js';
+import {QuickToggle} from '../quickSettings.js';
const A11Y_SCHEMA = 'org.gnome.desktop.a11y';
const KEY_ALWAYS_SHOW = 'always-show-universal-access-status';
return widget;
}
});
+
+export const HighContrastToggle = GObject.registerClass(
+class HighContrastToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('High Contrast'),
+ iconName: 'high-contrast-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: A11Y_INTERFACE_SCHEMA});
+ settings.bind(KEY_HIGH_CONTRAST,
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const MagnifierToggle = GObject.registerClass(
+class MagnifierToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Zoom'),
+ iconName: 'org.gnome.Settings-accessibility-zoom-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: APPLICATIONS_SCHEMA});
+ settings.bind('screen-magnifier-enabled',
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const LargeTextToggle = GObject.registerClass(
+class LargeTextToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Large Text'),
+ iconName: 'font-x-generic-symbolic',
+ toggleMode: true,
+ });
+
+ this._settings = new Gio.Settings({schemaId: DESKTOP_INTERFACE_SCHEMA});
+ this._updateChecked();
+
+ const toggledId = this.connect('notify::checked', () => {
+ if (this.checked)
+ this._settings.set_double(KEY_TEXT_SCALING_FACTOR, DPI_FACTOR_LARGE);
+ else
+ this._settings.reset(KEY_TEXT_SCALING_FACTOR);
+ });
+
+ this._settings.connectObject(`changed::${KEY_TEXT_SCALING_FACTOR}`, () => {
+ this.block_signal_handler(toggledId);
+ this._updateChecked();
+ this.unblock_signal_handler(toggledId);
+ });
+ this._settings.bind_writable(KEY_TEXT_SCALING_FACTOR,
+ this, 'reactive',
+ false);
+ }
+
+ _updateChecked() {
+ const factor = this._settings.get_double(KEY_TEXT_SCALING_FACTOR);
+ const checked = factor > 1.0;
+ this.set({checked});
+ }
+});
+
+export const ScreenReaderToggle = GObject.registerClass(
+class ScreenReaderToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Screen Reader'),
+ iconName: 'audio-speakers-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: APPLICATIONS_SCHEMA});
+ settings.bind('screen-reader-enabled',
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const ScreenKeyboardToggle = GObject.registerClass(
+class ScreenKeyboardToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Screen Keyboard'),
+ iconName: 'org.gnome.Settings-keyboard-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: APPLICATIONS_SCHEMA});
+ settings.bind('screen-keyboard-enabled',
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const VisualBellToggle = GObject.registerClass(
+class VisualBellToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Visual Alerts'),
+ iconName: 'dialog-information-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: WM_SCHEMA});
+ settings.bind(KEY_VISUAL_BELL,
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const StickyKeysToggle = GObject.registerClass(
+class StickyKeysToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Sticky Keys'),
+ iconName: 'preferences-desktop-keyboard-shortcuts-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: A11Y_KEYBOARD_SCHEMA});
+ settings.bind(KEY_STICKY_KEYS_ENABLED,
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const SlowKeysToggle = GObject.registerClass(
+class SlowKeysToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Slow Keys'),
+ iconName: 'preferences-desktop-keyboard-shortcuts-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: A11Y_KEYBOARD_SCHEMA});
+ settings.bind(KEY_SLOW_KEYS_ENABLED,
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const BounceKeysToggle = GObject.registerClass(
+class BounceKeysToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Bounce Keys'),
+ iconName: 'preferences-desktop-keyboard-shortcuts-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: A11Y_KEYBOARD_SCHEMA});
+ settings.bind(KEY_BOUNCE_KEYS_ENABLED,
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});
+
+export const MouseKeysToggle = GObject.registerClass(
+class MouseKeysToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Mouse Keys'),
+ iconName: 'preferences-desktop-keyboard-shortcuts-symbolic',
+ toggleMode: true,
+ });
+
+ const settings = new Gio.Settings({schemaId: A11Y_KEYBOARD_SCHEMA});
+ settings.bind(KEY_MOUSE_KEYS_ENABLED,
+ this, 'checked',
+ Gio.SettingsBindFlags.DEFAULT);
+ }
+});